package com.atguigu;

import java.time.Duration;
import java.time.LocalDateTime;

/**
 * 100以内的所有质数输出。实现方式二
 * 质数：素数，只能被1和它本身整除的自然数  --->从2开始，到这个数-1结束为止，都不能被这个数本身整除
 * <p>
 * 最小的质数是：2
 * <p>
 * 对PrimeNumberTest文件中质数输出问题的优化
 *
 * @author : leimingchao
 * @date Date : 2021年07月20日 22:20
 */
public class PrimeNumberTest2 {

    public static void main(String[] args) {
        int count = 0;
        LocalDateTime startTime = LocalDateTime.now();
        //遍历100000以内的自然数
        label:for (int i = 2; i <= 100000; i++) {
            for (int j = 2; j <= Math.sqrt(i); j++) {
                //i被j除尽
                if (i % j == 0) {
                    continue label;
                }
            }
            //能执行到此步骤的都是质数
            count++;
        }
        LocalDateTime endTime = LocalDateTime.now();
        long millis = Duration.between(startTime, endTime).toMillis();
        System.out.println("质数的个数为：" + count);
        //100000  7569毫秒 --->优化一：break：757毫秒 --->优化二：9毫秒
        System.out.println("所花费的时间：" + millis + "毫秒");
    }
}
